#include <avz.h>

using namespace AvZ;

void Script()
{
    SetErrorMode(CONSOLE);                                // 显示Debug
    OpenMultipleEffective('Q', AvZ::MAIN_UI_OR_FIGHT_UI); // 脚本多次生效，按下 Q 键取消此效果
    auto zombie_list = GetMainObject()->zombieList();
    int total_wave = GetMainObject()->totalWave();

    unsigned int zombie_name[33][2] = {
        {0xA9BDD5C6}, // 普僵
        {0xC4D6ECC6}, // 旗帜
        {0xCFD5B7C2}, // 路障
        {0xCBB8C5B3}, // 撑杆
        {0xB0CDFACC}, // 铁桶
        {0xA8B1C1B6}, // 读报
        {0xC5C3FACC}, // 铁门
        {0xADE9CFE9}, // 橄榄
        {0xF5CDE8CE}, // 舞王
        {0xE8CEE9B0}, // 伴舞
        {0xD3D7BCD1}, // 鸭子
        {0xAECBB1C7}, // 潜水
        {0xB5B3F9B1}, // 冰车
        {0xC1C7A9D1}, // 雪橇
        {0xE0EBA3BA}, // 海豚
        {0xF3B3A1D0}, // 小丑
        {0xF2C7F8C6}, // 气球
        {0xA4B9F3BF}, // 矿工
        {0xF8CCF8CC}, // 跳跳
        {0xCBC8A9D1}, // 雪人
        {0xABBCC4B1}, // 蹦极
        {0xDDCCF6B7}, // 扶梯
        {0xBAC0B6CD}, // 投篮
        {0xDBD1D7B0}, // 白眼
        {0xEDB9A1D0}, // 小鬼
        {0xA9B2A9BD}, // 僵博
        {0xB9B6E3CD}, // 豌豆
        {0xFBB9E1BC}, // 坚果
        {0xB7BDB1C0}, // 辣椒
        {0xB9C7FABB}, // 机枪
        {0xCFB9D1CE}, // 窝瓜
        {0xE1BCDFB8}, // 高坚
        {0xDBD1ECBA}, // 红眼
    };
    int Wave_and_ZombieType[total_wave][33] = {0};
    int total_type_num[33] = {0}; // 初始化列表

    // 测试GBK码时使用
    /*for (int i = 0; i < 33; i++)
    {
        printf("%s\n", zombie_name[i]);
    }*/

    for (int wave_ = 0; wave_ < total_wave; wave_ = wave_ + 1)
    {
        for (int x = wave_ * 50; x < wave_ * 50 + 50; x = x + 1)
        {
            if (zombie_list[x] == 0xffffffff)
            {
                break;
            }
            else
            {
                Wave_and_ZombieType[wave_][zombie_list[x]] += 1; // 读取每波每种僵尸总数
                total_type_num[zombie_list[x]] += 1;             // 读取所有波每种僵尸总数
            }
        }
    }

    printf("%c%c%c%c", 0xB2, 0xA8, 0xB4, 0xCE);
    for (int i = 0; i < total_wave; i = i + 1)
    {
        if (i <= 8)
        {
            printf("%2u", i + 1);
        }
        else
        {
            printf("%3u", i + 1);
        }
    }
    printf("%c%c%c%c\n", 0xD7, 0xDC, 0xCA, 0xFD);

    for (int i = 0; i < 33; i = i + 1)
    {
        if (total_type_num[i] != 0)
        {
            printf("%s", zombie_name[i]);
            for (int wave_ = 0; wave_ < total_wave; wave_ = wave_ + 1)
            {
                if (wave_ <= 8)
                {
                    printf("%2u", Wave_and_ZombieType[wave_][i]);
                }
                else
                {
                    printf("%3u", Wave_and_ZombieType[wave_][i]);
                }
            }
            printf("%4u\n", total_type_num[i]);
        }
    }
}